#ifndef __COMM__
#define __COMM__
#include <iostream>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define PATH_NAME "/home/LDCWD/learncode"
#define PROJ_ID 12345
#include <cstdio>
#include <cstdlib>
#define SHMSIZE 4096
#define FIFOFILE_NAME "myfifo"
#define MODE 0666
key_t GetKey()
{
    key_t key=ftok(PATH_NAME,PROJ_ID);
    if(key<0)
    {
        perror("ftok");
        exit(-1);
    }
    return key;
}
int GetSHMmethod(int shmflg)
{
    key_t key=GetKey();
    int shmid=shmget(key,SHMSIZE,shmflg);
    if(shmid<0)
    {
        perror("shmget");
        exit(-2);
    }
    return shmid;
}
int CreatSHM()//创建
{
    return GetSHMmethod(IPC_CREAT|IPC_EXCL|0666);
}
int GetSHM()//获取
{
    return GetSHMmethod(IPC_CREAT);
}
class Init
{
    public:
    Init()
    {
            //创建命名管道
    int retmkfifo=mkfifo(FIFOFILE_NAME,MODE);
    if(retmkfifo==-1)
    {
        perror("mkfifo");
        exit(-6);
    }
    }
    ~Init()
    {
            //删除管道文件
    int retunlink=unlink(FIFOFILE_NAME);
    if(retunlink==-1)
    {
        perror("unlink");
        exit(-7);
    }
    }
};
#endif